package com.aos.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @ClassName Permission
 * @Description:权限
 * @Author wumingwang
 * @Date 2018/9/5 11:27
 * @Version 1.0
 */
@Data
public class Permission implements Serializable {

    private static final long serialVersionUID = 433112321902893921L;

    /**主键、自增*/
    @ApiModelProperty(hidden = true)
    private Long id;

    /**上级权限（菜单）*/
    private Long parentId;

    /**应用ID*/
    @NotNull(message="应用不能为空")
    private Long applicationId;

    /**权限码（权限码+应用ID 唯一）*/
    @NotNull(message="权限码不能为空")
    @Size(min=1,max=32,message="权限码长度必须在1~32位")
    private String code;

    /**备注*/
    @Size(max=50,message="备注不能超过50位")
    private String comment;

    /**权限类型[页面元素:1;菜单:2]*/
    @NotNull(message="菜单类型不能为空")
    @Pattern(regexp = "^\\d{1,2}$",message="菜单类型只能是不超过2位的数字")
    private String permissionType;

    /**权限类型为页面元素:服务器接口;权限类型为菜单:前端URL*/
    @NotNull(message="地址不能为空")
    @Size(min=1,max=125,message="地址不能超过125位")
    private String url;

    /**前端显示icon标识*/
    @Size(max=30,message="icon不能超过30位")
    private String icon;

    /**菜单显示顺序由上往下，从小到大。*/
    private Integer sequence;

    /**菜单、按钮名称*/
    @NotNull(message="名称不能为空")
    @Size(min=1,max=50,message="名称必须在1~50位")
    private String name;
}
